<?php
/**
 * Abstract model of an SQL database. Needs to be extended by a model providing its vendor-specific implementation.
 */
abstract class SQLDatabase {
	
	/**
	 * Database name. To be overridden by actual table model children.
	 * 
	 * @var string $strDatabaseName
	 */
	protected $strDatabaseName;
	

	/**
	 * SQL server implementation your table model must connect to to run queries on. To be set inside table actual table model children constructors.
	 *
	 * @var SQLServer server
	 */
	protected $server;
	
	/**
	 * Creates a database.
	 * 
	 * @return void
	 */
	abstract public function create();
	
	/**
	 * Gets tables in database.
	 * 
	 * @return array(string)
	 */
	abstract public function getTables();
	
	/**
	 * Renames database.
	 * 
	 * @param string $strNewName
	 */
	abstract public function rename($strNewName);
	
	/**
	 * Drops database.
	 * 
	 * @return void
	 */
	abstract public function drop();
}